import request from '@/utils/request';

const userApi = {
  /**
   * 手机号登录
   * @param {Object} data - 登录信息
   * @param {string} data.phone - 手机号
   * @param {string} data.code - 验证码
   */
  loginByPhone(data) {
    return request({
      url: '/api/user/login/phone',
      method: 'POST',
      data,
      loading: true,
      loadingText: '登录中...'
    });
  },

  /**
   * 微信登录
   * @param {Object} data - 登录信息
   * @param {string} data.wxCode - 微信登录code
   */
  loginByWeixin(data) {
    return request({
      url: '/api/user/login/weixin',
      method: 'POST',
      data,
      loading: true,
      loadingText: '登录中...'
    });
  },

  /**
   * 发送手机验证码
   * @param {string} phone - 手机号
   */
  sendSmsCode(phone) {
    return request({
      url: '/api/user/sendSmsCode',
      method: 'POST',
      data: { phone },
      loading: true,
      loadingText: '发送中...'
    });
  },

  /**
   * 退出登录
   */
  logout() {
    return request({
      url: '/api/user/logout',
      method: 'POST'
    });
  },

  /**
   * 获取用户信息
   */
  getUserInfo() {
    return request({
      url: '/api/user/info',
      method: 'GET'
    });
  },

  /**
   * 更新用户信息
   * @param {Object} data - 用户信息
   */
  updateUserInfo(data) {
    return request({
      url: '/api/user/update',
      method: 'PUT',
      data,
      loading: true,
      loadingText: '更新中...'
    });
  },

  /**
   * 上传用户头像
   * @param {string} filePath - 文件路径
   */
  uploadAvatar(filePath) {
    return new Promise((resolve, reject) => {
      uni.uploadFile({
        url: '/api/user/avatar',
        filePath,
        name: 'file',
        success: (res) => {
          if (res.statusCode === 200) {
            try {
              const data = JSON.parse(res.data);
              resolve(data.data);
            } catch (e) {
              reject(new Error('上传失败'));
            }
          } else {
            reject(new Error('上传失败'));
          }
        },
        fail: () => {
          reject(new Error('上传失败'));
        }
      });
    });
  },

  /**
   * 获取用户收货地址列表
   */
  getAddressList() {
    return request({
      url: '/api/user/address/list',
      method: 'GET'
    });
  },

  /**
   * 获取用户默认收货地址
   */
  getDefaultAddress() {
    return request({
      url: '/api/user/address/default',
      method: 'GET'
    });
  },

  /**
   * 添加收藏
   * @param {string} productId - 商品ID
   */
  addFavorite(productId) {
    return request({
      url: '/api/user/favorite/add',
      method: 'POST',
      data: { productId }
    });
  },

  /**
   * 取消收藏
   * @param {string} productId - 商品ID
   */
  removeFavorite(productId) {
    return request({
      url: `/api/user/favorite/remove/${productId}`,
      method: 'DELETE'
    });
  },

  /**
   * 获取收藏列表
   */
  getFavoriteList() {
    return request({
      url: '/api/user/favorite/list',
      method: 'GET'
    });
  },

  /**
   * 检查商品是否收藏
   * @param {string} productId - 商品ID
   */
  checkFavorite(productId) {
    return request({
      url: `/api/user/favorite/check/${productId}`,
      method: 'GET'
    });
  }
};

export default userApi; 